home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PET / S-Super PET / (s)t4.d64 / TREESORT.PAS < prev   
Pascal/Delphi Source File  |  2009-01-18  |  1KB  |  71 lines

  1.  
  2. program main( output, input );
  3.  
  4.   type
  5.     nodeptr = ^node;
  6.     node =
  7.       record
  8.         left : nodeptr;
  9.         data : integer;
  10.         right : nodeptr;
  11.       end;
  12.  
  13.   var
  14.     root : nodeptr;
  15.     i, j : integer;
  16.  
  17.   procedure create( var pointer : nodeptr );
  18.     begin
  19.       new( pointer );
  20.       pointer^.data := i;
  21.       pointer^.left := nil;
  22.       pointer^.right := nil;
  23.     end;
  24.  
  25.  
  26.   procedure add( subtree : nodeptr );
  27.     begin
  28.       if( root = nil )then
  29.         create( root )
  30.       else if( subtree^.data = i )then
  31.         writeln( 'duplicate' )
  32.       else if( subtree^.data < i )then
  33.         if( subtree^.right = nil )then
  34.           create( subtree^.right )
  35.         else
  36.           add( subtree^.right )
  37.       else
  38.         if( subtree^.left = nil )then
  39.           create( subtree^.left )
  40.         else
  41.           add( subtree^.left )
  42.     end;
  43.  
  44.   procedure dump( subtree : nodeptr );
  45.     begin
  46.       if( subtree <> nil )then
  47.         begin
  48.           dump( subtree^.left );
  49.           writeln( subtree^.data );
  50.           dump( subtree^.right );
  51.         end;
  52.     end;
  53.  
  54.   procedure prompt;
  55.     begin
  56.       writeln( 'enter a number - "q" when done' );
  57.     end;
  58.  
  59.   begin
  60.     root := nil;
  61.     prompt;
  62.     while input^ <> 'q' do
  63.       begin
  64.         readln( i );
  65.         add( root );
  66.         prompt;
  67.       end;
  68.     dump( root );
  69.   end.
  70.  
  71.